package py.com.alfa.escriba.gui.controller.object.admin;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;

import py.com.alfa.escriba.gui.config.EscribaGUIApplicationContextProvider;
import py.com.alfa.escriba.gui.controller.view.Permissions;
import py.com.alfa.escriba.gui.controller.view.View;
import py.com.alfa.escriba.gui.controller.view.ViewManager;
import py.com.alfa.escriba.gui.controller.view.admin.ClientesViewContext;
import py.com.alfa.escriba.gui.controller.view.admin.ClientesViewFragment;
import py.com.alfa.escriba.gui.dto.GenericDTO;
import py.com.alfa.escriba.gui.dto.admin.BarrioDTO;
import py.com.alfa.escriba.gui.dto.admin.ClienteDTO;
import py.com.alfa.escriba.gui.dto.admin.ClienteInfoDTO;
import py.com.alfa.escriba.gui.dto.admin.DepartamentoDTO;
import py.com.alfa.escriba.gui.dto.admin.DistritoDTO;
import py.com.alfa.escriba.gui.dto.admin.DomicilioDTO;
import py.com.alfa.escriba.gui.dto.admin.TabRefDTO;
import py.com.alfa.escriba.gui.dto.admin.TelefonoDTO;
import py.com.alfa.escriba.gui.services.Services;



public class ClientesControllerObject {
	
	private List<ClienteDTO> clientes;
	private ClienteInfoDTO cliente;
	private DomicilioDTO   domicilio;
	private TelefonoDTO    telefono;
	private ViewManager viewManager;
	private String titulo = "";
	private List<TabRefDTO> tipos;
	private List<DepartamentoDTO> departamentos;
	private List<DistritoDTO> distritos;
	private List<BarrioDTO>   barrios;
	private DomicilioDTO      domicilioOri;
	private TelefonoDTO       telefonoOri;
	private List<TabRefDTO> generos;
	private List<TabRefDTO> estadosCiviles;
	private List<GenericDTO> paises;
	private TabRefDTO sexo;
	private TabRefDTO estadoCivil;
	private GenericDTO pais;
//	private List<TabRefDTO> tiposDoc;
	
	public ClientesControllerObject() {
		ApplicationContext ctx = EscribaGUIApplicationContextProvider.getContext();
		this.setViewManager((ViewManager) ctx.getBean(Services.VIEW_MANAGER));
		this.getViewManager().registerContext(View.CLIENTES, new ClientesViewContext());
		this.setClientes(new ArrayList<ClienteDTO>());
		this.setCliente(null);
	}

	public ClientesViewFragment view(){
		return (ClientesViewFragment) this.getContext().getViewFragment();
	}

	public ClientesViewContext getContext(){
		return (ClientesViewContext) getViewManager().getContext(View.CLIENTES);
	}
	
	public Permissions getPermissions(){
		return getViewManager().getPermissions();
	}	
	public ViewManager getViewManager() {
		return viewManager;
	}

	public void setViewManager(ViewManager viewManager) {
		this.viewManager = viewManager;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public List<ClienteDTO> getClientes() {
		return clientes;
	}

	public void setClientes(List<ClienteDTO> clientes) {
		this.clientes = clientes;
	}

	public ClienteInfoDTO getCliente() {
		if ( this.cliente == null) {
			this.cliente = new ClienteInfoDTO();
		}
		return cliente;
	}

	public void setCliente(ClienteInfoDTO cliente) {
		this.cliente = cliente;
	}

	public DomicilioDTO getDomicilio() {
		if ( this.domicilio == null) {
			this.domicilio = new DomicilioDTO();
		}
		return domicilio;
	}

	public void setDomicilio(DomicilioDTO domicilio) {
		this.domicilio = domicilio;
	}
	
	public DomicilioDTO getDomicilioOri() {
		return domicilioOri;
	}

	public void setDomicilioOri(DomicilioDTO domicilio) {
		this.domicilioOri = domicilio;
	}	

	public List<TabRefDTO> getTipos() {
		return tipos;
	}

	public void setTipos(List<TabRefDTO> tipos) {
		this.tipos = tipos;
	}

	public List<DepartamentoDTO> getDepartamentos() {
		return departamentos;
	}

	public void setDepartamentos(List<DepartamentoDTO> departamentos) {
		this.departamentos = departamentos;
	}

	public List<DistritoDTO> getDistritos() {
		return distritos;
	}

	public void setDistritos(List<DistritoDTO> distritos) {
		this.distritos = distritos;
	}

	public List<BarrioDTO> getBarrios() {
		return barrios;
	}

	public void setBarrios(List<BarrioDTO> barrios) {
		this.barrios = barrios;
	}

	public TelefonoDTO getTelefono() {
		if ( this.telefono == null) {
			this.telefono = new TelefonoDTO();
		}
		return telefono;
	}

	public void setTelefono(TelefonoDTO telefono) {
		this.telefono = telefono;
	}

	public TelefonoDTO getTelefonoOri() {
		return telefonoOri;
	}

	public void setTelefonoOri(TelefonoDTO telefonoOri) {
		this.telefonoOri = telefonoOri;
	}
	
	
	public String descEstado(boolean activo) {
		return (activo)?"SI":"NO";
	}

	public List<TabRefDTO> getGeneros() {
		return generos;
	}

	public void setGeneros(List<TabRefDTO> generos) {
		this.generos = generos;
	}

	public List<TabRefDTO> getEstadosCiviles() {
		return estadosCiviles;
	}

	public void setEstadosCiviles(List<TabRefDTO> estadosCiviles) {
		this.estadosCiviles = estadosCiviles;
	}

	public List<GenericDTO> getPaises() {
		return paises;
	}

	public void setPaises(List<GenericDTO> paises) {
		this.paises = paises;
	}

	public TabRefDTO getSexo() {
		return sexo;
	}

	public void setSexo(TabRefDTO sexo) {
		this.sexo = sexo;
	}

	public TabRefDTO getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(TabRefDTO estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public GenericDTO getPais() {
		return pais;
	}

	public void setPais(GenericDTO pais) {
		this.pais = pais;
	}
		
}
